var async=require('async');
var mock=require('./mock.js');

/*中途发生错误时，如果调用了错误句柄，
之后的task仍会继续执行，
最终结果为task执行的顺序
	1.错误发生时已经成功返回的task，则将其结果保存在对应的位置
	2.错误发生时已经执行但还未返回的task，则将空值保存在对应的位置
	3.错误发生时还未开始执行的task则忽略其结果
	4.错误的task的固定返回值undefind以及错误发生时还未返回的task的固定返回值 空
	5.结果数组的总长度为错误发生时已经开始执行task数
*/
async.map([1,2,3,4],(n,cb)=>{
    mock.getUrl(n==2,n,(err,data)=>{
        if(err)return cb(err);
        console.log(data);
        cb(null,data);
    });
},(err,ret)=>{
    console.log('err:',err);
    console.log('ret:',ret);
});